var tree = {};
tree.decorate = function () {
    console.log('Make sure the tree won\'t fall');
};

tree.getDecorator = function (decorator) {
    tree[decorator].prototype = this;
    return new tree[decorator];
};

tree.RedBalls = function () {
    this.decorate = function () {
        this.RedBalls.prototype.decorate();
        console.log('Put on some red balls');
    };
};

tree.BlueBalls = function () {
    this.decorate = function () {
        this.BlueBalls.prototype.decorate();
        console.log('Put on some blue balls');
    };
};

tree.Angel = function () {
    this.decorate = function () {
        this.Angel.prototype.decorate();
        console.log('A angel on the top');
    };
};


// use
tree = tree.getDecorator('Angel');
tree = tree.getDecorator('BlueBalls');
tree = tree.getDecorator('RedBalls');

tree.decorate();